#ifndef __RENDERUNITMGR_H__
#define __RENDERUNITMGR_H__

#include <vector>
#include "..\Core\Singleton.h"

class CD3D9RenderUnit;

class CRenderUnitMgr : public Singleton<CRenderUnitMgr>
{
public:
	typedef std::vector<CD3D9RenderUnit*> CRenderUnitSet;
private:
	CRenderUnitSet m_setRenderUnit;
	CRenderUnitSet::iterator m_iter;
public:
	CRenderUnitMgr(void);
	virtual ~CRenderUnitMgr();

	// non-const method
	void Insert(CD3D9RenderUnit* pUnit);
	void Delete(CD3D9RenderUnit* pUnit);

	// const method
	CD3D9RenderUnit* GetUnit(int nUnitIndex) const;
	CD3D9RenderUnit* GetFirstUnit(void);
	CD3D9RenderUnit* GetNextUnit(void);
};

#endif